#pragma once

#include "Scanner.h"
#include "CharacterTable.h"
#include "TempParseData.h"
#include "CheckMethodData.h"
#include "RowNames.h"
#include "ColumnNames.h"

class CCharacterTableChecker
{
public:
	CCharacterTableChecker(CScanner & scanner, CCharacterTable & characterTable);

	void AddToCharacterTable(std::string currRowName);
	void CheckCharacters(std::string currRowName, string currColumnName);
	void Reset();

	std::string GetCurrClass() const;
	std::string GetCurrMethod() const;
	std::string GetCurrId() const;

	CCharacterTable CharacterTable() const;

private:
	CTempParseData GetType(std::string id);

	CScanner & m_scanner;
	CCharacterTable & m_characterTable;

	std::string m_currClass, m_currMethod, m_currId;
	std::vector<CCheckMethodData> m_checkMethodData;
	bool m_assignement, m_arithmetic, m_logicExp;
	CCharData m_assignementIdData;
};
